
package org.icnmasjid.member.dao;

import java.util.List;
import java.util.Map;

import org.icnmasjid.member.dao.Dao;
import org.icnmasjid.member.model.AfaReg;
import org.icnmasjid.member.model.Registration;
import org.icnmasjid.member.model.SchoolRegistration;

public interface RegistrationDao extends Dao {

    /**
     * Retrieves all of the registrations
     */
    public List getRegistrations(Registration registration);

    /**
     * Gets registration's information based on primary key. An
     * ObjectRetrievalFailureException Runtime Exception is thrown if
     * nothing is found.
     *
     * @param registrationId the registration's registrationId
     * @return registration populated registration object
     */
    public Registration getRegistration(final Integer registrationId);

    /**
     * Saves a registration's information
     * @param registration the object to be saved
     */
    public void saveRegistration(Registration registration);

    /**
     * Removes a registration from the database by registrationId
     * @param registrationId the registration's registrationId
     */
    public void removeRegistration(final Integer registrationId);

    public Map<String, Integer> getFamilyCheckedInCount();
    public Map<String, Integer> getAmtCollected();
    
    public SchoolRegistration getExistingSchoolRegistration(SchoolRegistration reg);
    public SchoolRegistration merge(SchoolRegistration sr);
    public List<SchoolRegistration> getExistingSchoolRegistrations(SchoolRegistration reg);
    
    public List<AfaReg> getAfaRegistrations(AfaReg afaReg);

}

